> 3..5.times{ puts "yo" } -> what do you *think* this will do?

I think that it will be parsed as

3..(5.times{ puts "yo" })

That is, Ruby will do '5.times{ puts "yo" }', then it will return 5
(that's what 5.times returns), and use *that* 5 to do a '3..5'.  since
that 3..5 is not doing anything, you would not notice it.

This might illustrate what you ean.

( 3..5.times{ puts "yo" }  ).to_a.each { |n| puts n}

Prints:
yo
yo
yo
yo
yo
3
4
5