Langur uses the following, in order of descending precedence.
not array literals
|logical equality||xor leq
|logical or||or or?||leftL|
See the numbers page for math operator descriptions.
Normal operators treat null as an ordinary value (don't favor propogating null). Testing null == null returns true and null == false returns false.
Operators ending with ? are database operators. For these, if either side is null, the result is null. Testing null ==? anything returns null.
The and and or operators are short-circuiting.
Database operators are short-circuiting in a different manner (only if the left value is null). This includes the and? and or? operators.
Testing NaN == NaN returns false, and NaN ==? null returns null. The isNaN() function may be helpful here.
Items of the same type (arrays, hashes, or ranges) may be directly compared for equality or inequality.
These comparisons are not affected by the NaN issue. That is, NaN within composite items compare as being the same. So, NaN != NaN, but [NaN] == [NaN].
Whereas 1 == 1.0, within a composite comparison, this is not true, so that  != [1.0].