If statement executing even when conditionals are false.

The original clearly show that lightlevel test is BETWEEN 250 and 800

Respectfully disagree.

if (250 < lightlevel && lightlevel < 800)

Can you read that in English and honestly say that it makes immediate sense ?

When I read it, as soon as I get to if (250 < lightLevel I stop and translate it to if (lightLevel > 250, so why not write it that way in the first place ?

Equally, if you are so wedded to thinking backwards why not do it to the second part of the test as well ? && 800 > lightLevel)

The program is testing the value of lightLevel so it makes sense for that to be the first thing in the test.

Programs need to be read and understood. That is easiest if they are written is as natural language as possible, not in some back to front way that brings little or nothing to the party.