1 &#60; 2 &#60; 3 DOES evaluate to (1 &#60; 2) &#60; 3<p>And 1 &#60; 2 evaluates to true. What else would it evaluate to?<p>That leaves (true &#60; 3)<p>Which fails. This isn't a mistake by ruby. When you chain methods you have to think about what they return.<p>And the issue here isn't associativity.