# Een waarde uitrekenen: expressies [Syntaxis en waarden](LEESMIJ.md) Een expressie is code die een waarde oplevert, zoals 2 + 3 of een vraag over een score. De volgorde van de berekeningen kan het antwoord veranderen. ## De rekenregels lezen Een **operator** is een reken- of vraagteken, zoals `+` of `==`. De **operanden** zijn de waarden die hij gebruikt. Bij `2 + 3` is `+` de operator en zijn 2 en 3 de operanden. **Unair** betekent één operand; **binair** betekent twee. **Precedentie** betekent voorrang bij het groeperen van code. Vermenigvuldigen wordt vóór optellen gegroepeerd: `2 + 3 * 4` geeft 14, terwijl `(2 + 3) * 4` 20 geeft. **Associativiteit** beslist bij bewerkingen met dezelfde voorrang. “Links” betekent groeperen vanaf links: `8 - 3 - 1` betekent `(8 - 3) - 1`. “Rechts” betekent groeperen vanaf rechts, zoals bij `niet niet klaar`. Een **primaire expressie** is een eenvoudig stuk dat een waarde oplevert, zoals een literal, naam of expressie tussen haakjes. Een **postfix** komt na een waarde: `[0]` in `spelers[0]` kiest een onderdeel. **Aaneenschakelen** betekent meerdere zulke stappen toevoegen, zoals `spelers[0].naam`. **Evalueren** betekent de waarde bepalen. Voorrang bepaalt de groepen; evaluatievolgorde bepaalt welke delen eerst worden berekend. De **callee** is de functie die wordt aangeroepen. Bij [verkort evalueren](../begrippen/verkort-evalueren.md) lees je wanneer een deel bewust wordt overgeslagen. Van laagste naar hoogste voorrang: | Niveau | Operatoren | Groepering | |---|---|---| | 1 | `of` | Links. | | 2 | `en` | Links. | | 3 | `==`, `!=` | Links. | | 4 | `<`, `<=`, `>`, `>=` | Links. | | 5 | `+`, `-` | Links. | | 6 | `*`, `/`, `%` | Links. | | 7 | unaire `niet`, `+`, `-` | Rechts. | | 8 | aanroep `()`, index `[]`, veld `.` | Aaneengeschakeld van links naar rechts. | Haakjes veranderen de groepering: `(2 + 3) * 4` is 20. `2 + 3 * 4` is 14. Schrijf `niet (a == b)` wanneer je een vergelijking wilt ontkennen: `niet` bindt sterker dan `==`. De functiepositie wordt vóór de argumenten geëvalueerd; argumenten volgen van links naar rechts. Ook verzamelingselementen, mapsleutel/waarde-paren en indexexpressies volgen hun geschreven volgorde. `en` en `of` evalueren hun rechterkant alleen wanneer nodig. Vergelijkingen worden niet automatisch wiskundig geketend: schrijf `a < b en b < c`. ## Gerelateerde lemma’s [Syntaxis en waarden](LEESMIJ.md) · [Ingebouwde functies](../ingebouwde-functies/LEESMIJ.md) · [Programmeergidsen](../gidsen/LEESMIJ.md)