In Ruby, and and or have the same precedence! Matz may not be surprised, but I really am. In Ruby && has higher precedence than ||. This is what we’re used to from C and its imitators. Therefore, true || false && false is true but, watch out, true or false and false is false. Observe the truth table:
| x | y | z | x || y && z | x or y and z |
| true | true | true | true | true |
| true | true | false | true | false |
| true | false | true | true | true |
| true | false | false | true | false |
| false | true | true | true | true |
| false | true | false | false | false |
| false | false | true | false | false |
| false | false | false | false | false |
Commentary