!<= - Less than or equal to. If either operand is the value NaN prior to coercion, throw an exception.
!< - Less than. If either operand is the value NaN prior to coercion, throw an exception.
!>= - Greater than or equal to. If either operand is the value NaN prior to coercion, throw an exception.
!< - Greater than. If either operand is the value NaN prior to coercion, throw an exception.
Motivation: I have dealt with a frustrating bug where a comparison with NaN led to memory leaks. NaN semantics can convert an attribute access of an undefined property into a subtle memory leak.
I can imagine other useful semantics for less number-oriented applications. (Perhaps those would check for validity after coercion?) However, I don't have enough experience with those applications to suggest further semantics for these operators. Please reply to extend this idea with more semantics if you have a good idea.