operator precedence
When you read 2 + 3 × 4 you know the multiplication happens first, giving 14, not 20, because multiplication binds tighter than addition. Regular expressions need the same kind of unwritten convention so that an expression like ab+c has only one meaning. Operator precedence is the set of rules that decides what groups with what when parentheses are omitted.
The standard precedence, from tightest-binding to loosest, is: Kleene star first, then concatenation, then union. So ab* means a(b*), not (ab)*, because star grabs only the b next to it. And ab+c means (ab)+(c), that is, the union of the strings ab and c, not a(b+c), because concatenation binds tighter than union. To override these defaults you use parentheses, exactly as in arithmetic: (ab)* forces the star to apply to the whole group ab, and a(b+c) forces the union to happen before the concatenation.
Getting precedence wrong is one of the most common sources of mistakes when writing or reading regular expressions, because the difference is silent: ab* and (ab)* are both legal but denote completely different languages. When in doubt, add parentheses, they never change the meaning of an already-correct expression and they make your intent unmistakable. Precedence is purely a parsing convenience; it does not change the three fundamental operations themselves.
ab* denotes { a, ab, abb, abbb, ... } (one a, then any number of b's), but (ab)* denotes { ε, ab, abab, ... } (any number of the block ab). Same symbols, different grouping, different language.
Star binds tightest, then concatenation, then union.
Precedence is silent and easy to misread; ab* is not (ab)*. When unsure, parenthesize: extra parentheses can never change the meaning of a correct expression.