How do you think ruby parses this expression? a = 1 + b = 2 + c = 4 + d = 8 Originally I thought that operator precedence would result in a = (1 + b) = (2 + c) = (4 + d) = 8 and since an assignment requires a variable, that would result in a SyntaxError. But instead it seems that everything on the right side of the assignment operator is evaluated first: a = (1 + (b = (2 + (c = (4 + (d = 8)))))) That had me really puzzled at first but I guess the behavior makes a certain sense, and it's more useful than a syntax error. Ruby's tolerant parser wins again! Daniel