I came across something like this in some specs at work today. A service was checking if a param was either `"true"` as a String or `true` as a TrueClass. It looked legit to me, but I found that it only evaluated to true when the supplied param value was the same as the first element in the OR.

A simplified example below:

`5 == (5 || 6)` evaluates to `true`

`5 == (6 || 5)` evaluates to `false`

Why?