To answer your question, in my experience (I taught programming 101 number of times) many people are indeed confused when they need to reason about complex if statements. Typically, they make redundant tests, and it takes a little while before they understand why it is not needed.