In reply to sj1992:
In discrete event driven simulation, like SystemVerilog, no two events happen simultaneously. Either the signal changes first, or the condition evaluates first.
If there are multiple processes involved, there are a number of things you can do to guarantee a specific ordering. The easiest would be to use a non-blocking assignment you your signal.