From: Robert Klemme Date: 2005-06-09T21:15:32+09:00 Subject: Precedence (was: Order of operations) Jack Christensen wrote: > Just got bit by a little order of operations confusion. > > irb(main):012:0> a = nil or 1 > => 1 > irb(main):013:0> a > => nil > irb(main):014:0> a = (nil or 1) > => 1 > irb(main):015:0> a > => 1 But note: >> a = nil || 1 => 1 >> a => 1 >> > Probably old news to long time rubyists but it surprised me. Is there > any way to get a warning or something when a statement like the above > may not be behaving like you would think? No, because Ruby cannot know what you expect. But note that there *are* warnings: >> if ( a = 10 ) >> "ja" >> end (irb):3: warning: found = in conditional, should be == => "ja" >> "or" and "and" have much lower precedence than "||" and "&&" to give you the choice and for example do things like arr.empty? and puts "it's empty!" a > 0 and puts "positive" Kind regards robert