Redoslijed evaluacije operanada u izrazu
nikad nije definiran, i stoga nije nimalo zdravo pisati izraze u kojima jedan operand ovisi o vrijednosti drugog.
Općenito kad kompajler izgradi generativno stablo (derivation tree) prilikom interpretiranja nekog niza simbola koji predstavlja izraz programskog jezika, definirana pravila prednosti (precedence) i asocijativnosti nad operatorima određuju načine grupiranja dijelova izraza u zajedničkom podstablu (npr. zagradama) - redoslijed izvođenja operacija
jest definiran, redoslijed evaluiranja listova stabla nije.
Isto vrijedi i za aritmetičko-logičke izraze kao u gornjem primjeru, kao i za sve ostale - npr. ulančavanje sa <<, redoslijed evaluacije argumenata funkcije u striktnim jezicima (većina slijeva-nadesno, ali neki (OCaml) zdesna-nalijevo, valjda ovisno kako standard diktira :) i sl.
Rule of thumb: jedna naredba -> jedan side-effect (dakle ne npr. naredba koja istovremeno i baca iznimku i radio I/O).