Recently, I saw this question about how does Javascript evaluate an expression:

So, why does `1 < 2 < 3`

give `true`

, but `3 > 2 > 1`

give `false`

? According to operator precedence and associativity, they are evaluated from left to right. So...

`1 < 2 < 3`

is evaluated as`(1 < 2) < 3`

.`1 < 2`

is`true`

, making the expression`true < 3`

.- How does it compare a
`true`

against a number? It does this by first converting the boolean to a number.`true`

is converted to`1`

and`false`

is converted to`0`

(see 7.1.14 of the ECMAScript specififcation). Thus, the expression is evaluated as`1 < 3`

which gives`true`

.

Now for `3 > 2 > 1`

:

- Going left to right,
`3 > 2`

is evaluated first which is`true`

. The expression becomes`true > 1`

. - To evaluate,
`true`

is converted to`1`

. This gives`1 > 1`

, which is`false`

!

For bonus points, try figuring out `1 < 3 > 2`

and `1 > 3 < 2`

gives.

(originally posted on Dev.to)