# Why 3 > 2 > 1 gives false

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. `1 < 2 < 3` is evaluated as `(1 < 2) < 3`.
2. `1 < 2` is `true`, making the expression `true < 3`.
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`:

1. Going left to right, `3 > 2` is evaluated first which is `true`. The expression becomes `true > 1`.
2. 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.

For `1 < 3 > 2`:
1. `1 < 3` is `true`, so it becomes `true > 2`.
2. `true` is converted to `1`, so it becomes `1 > 2`, which is `false`.
For `1 > 3 < 2`:
1. `1 > 3` is `false`, so it becomes `false < 2`.
2. `false` is converted to `0`, so it becomes `0 < 2`, which is `true`.