Numeric comparison using JavaScript's greater-than and less-than operators is fairly intuitive. As mentioned, your operands will be coerced first to their primitive representations, and then coerced a second time, explicitly, to a number. For cases where both operands are numbers, the result is entirely intuitive:
123 < 456; // => true
And for NaN and Infinity, the following assertions can be made:
Infinity > 123; // => true
Infinity >= Infinity; // => true
Infinity > Infinity; // => false
NaN >= NaN; // => false
NaN > 3; // => false
NaN < 3; // => false
If one operand has a primitive representation that is not Number, then it will be coerced to Number before comparison. If you were to accidentally pass Array as an operand to >, then it would first coerce it to its primitive representation, which for arrays, is String with all individual coerced elements joined with a comma, and then attempt to coerce that to Number:
// Therefore this:
[123] < 456;
// Is equivalent to this:
Number(String([123])) < 456
Due to the potentially complicated coercions that may occur, it is always best to pass operands of the same type to >, <, >=, and <=.