Jim Freeze wrote: | -Case1 | n = 4 | s = (n == 3 or n == 5) | puts s | => false | -End Case1 | | -Case2 | n = 4 | puts (n == 3 or n == 5) | => if:2: parse error | puts (n == 3 or n == 5) | ^ | if:2: parse error | -End Case2 | | -Case3 | n = 4 | puts (n == 3 || n == 5) | => false | -End Case3 And these additional cases: -Case4 n=3 puts n==3 or n==5 # => true puts((n==3 or n==5)) # => true -End Case4 -Case5 n=3 puts n==3 or n==5 # => false n=5 puts((n==3 or n==5)) # => true -End Case5 It's due to the lower precendence of "or": In case 4 & 5 without the brackets, it's because "puts n ==3" gets higher precendence than "n ==5". Always use brackets when in doubt... With the double brackets, the expression with "or" is enforced higher precendence before being given as parameter to "puts", just as if you had used "||" on its own. That's why case 1 also works. However, I don't understand the parse error in case 2. Regards, Dennis Decker Jensen