Sections 2.3.5 (operators) and 2.8 (type conversions) in the
JSP Specification are your friends here.
I'll try to follow them through and see what I get. First ${bab eq 0}. This is of type A == B so section 2.3.5.7 applies. The weakness of the spec here is it doesn't say how an IntegerLiteral (here 0) is to be interpreted -- is it a BigInteger, or long or what? I'll go with BigInteger and see what happens... Since A and B are non-null, and B is an IntegerLiteral (BigInteger?), then type-coerce A into a BigInteger and apply A.equals(B). Section 2.8.3 says "If A is null or empty string, return 0". So now A is 0, a BigInteger (we guess). Then A.equals(B) should return true, since both sides are the BigInteger 0. This also works if IntegerLiteral is supposed to be a Long (say), and we still get true.
Since A is being coerced into a 0 value, the second expression ${bab gt -1} should also return true, which it does in your case.
Finally, ${6 / bab}. Once again, we have a choice -- is an IntegerLiteral a BigInteger or Long? In the first case, we coerce both to BigDecimal and return A.divide(B). This throws ArithmeticException since dividing by 0. try the other way, and coerce both to Double and apply the operator. This time, doing a double division by zero gives, yet again, an ArithmeticException. I assume this is the exception you describe?
So the only result I can't see working is the first -- as far as I can tell, ${ bab eq 0 } should be true. Are you sure that was the EL you tried, and if so what container and version was it on? It could be bug, unless I've misread the specs (and feel free to re-analyse the problem and tell me I made a mistake!).
P.S. So you keep your sanity, I very much doubt these very tricky coercions will appear on the exam!