The action of evaluating an expression is called evaluation.
You can think of all the other parts of code (such as control flow statements like
if branches and
for loops) as directions that indicate which expression (or which groups of expressions) to evaluate next.
Expressions can be nested within other expressions, and they can be nested within statements.
Top-level expressions are expressions which are not nested inside of another expression or a statement.
The majority of top-level expressions that you see in real code are of two types: assignment expressions and function call expressions.
What sources say
MDN says that an expression "resolves to a value", but I think it's clearer to say that an expression "produces a value when evaluated".
An expression can be evaluated any number of times, and it can produce a different value each time.