Úvod do úlohy

Relační a logické operátory tvoří základ všech podmínek a rozhodování v programu. Zatímco jednoduchý výraz jako a < b je snadný na čtení i vyhodnocení, složitější kombinace typu a < b && b <= c už v sobě zahrnuje více operátorů s různou precedencí a asociativitou. Abychom psali správné a čitelné podmínky, musíme rozumět tomu, v jakém pořadí JavaScript tyto výrazy vyhodnocuje, a kdy je nutné použít závorky k jednoznačnému určení.

Schopnost správně analyzovat složené výrazy je klíčová – jinak hrozí, že program bude fungovat jinak, než jsme zamýšleli, a chybu odhalíme až velmi pozdě.


Teorie a principy

  1. Precedence (priorita)

    • Relační operátory (<, <=, >, >=) mají vyšší prioritu než logické operátory (&&, ||).

    • Proto se nejprve vyhodnotí porovnání, a teprve pak spojky.

    • Příklad: a < b && b < c se čte jako (a < b) && (b < c).

  2. Asociativita

    • Většina relačních a logických operátorů má levou asociativitu – tedy vyhodnocují se zleva doprava.

    • Výjimkou je logický NOT (!), který je unární a vyhodnocuje se nejdříve.

  3. Operátory větší/menší než

    • a < b → true, pokud a je menší než b.

    • a <= b → true, pokud a je menší nebo rovno b.

    • Totéž platí analogicky pro > a >=.

  4. Výsledek složeného výrazu

    • Vždy jde o logickou hodnotu (true nebo false).

    • Operátor && (logické AND) vrací true jen tehdy, pokud jsou oba výrazy true.

    • Operátor || (logické OR) vrací true, pokud je alespoň jeden výraz true.

    • Operátor ! (NOT) neguje výsledek výrazu.


Praktické příklady kódu

Jednoduché porovnání v kombinaci s AND

Kombinace AND a OR

Nutnost závorek

Negace


Typické chyby / záludnosti

  • Zapomenutí na prioritu – studenti někdy myslí, že a < b && b < c se vyhodnocuje postupně zleva doprava bez závorek, ale ve skutečnosti se oba relační výrazy vyhodnotí před AND.

  • Nesprávné použití závorek – příliš mnoho závorek snižuje čitelnost, naopak jejich nedostatek může vést k jinému výsledku, než čekáme.

  • Záměna && a || – AND vyžaduje, aby byly obě podmínky pravdivé, zatímco OR stačí jedna.

  • Negace bez závorky – !a < b se vyhodnotí jako (!a) < b, což může vést k nelogickým výsledkům. Správně bychom měli psát !(a < b).


Shrnutí

  • Relační operátory (<, <=, >, >=) mají vyšší prioritu než logické operátory (&&, ||).

  • Asociativita většiny těchto operátorů je levostranná.

  • Operátor ! má vysokou prioritu a vyhodnocuje se jako první.

  • Výsledek složeného výrazu je vždy logická hodnota (true nebo false).