By default, variables produce results that are valid for the data rows they are derived from. Iterative variables variable produce results that are valid for the current row and preceding rows.
Usually, we are not interested in the running average, only in the average of the whole data series.
This is where the precalculated variables come in.
A variable can be set to be precalculated via the Precalculate attribute.
As it was already mentioned for precalculated expressions, the report goes through the data set twice. At the end of the first run, the value of precalculated variables computed for the last row are kept. In the second run, the same value is supplied for every data row. The value of such a precalculated variable can be displayed in a report header, which is shown before any report details to inform the reader in advance without having to look at the last page.
See Precalculate attribute for an example.
Variables can reference other variables. When certain combinations are encountered, it's necessary to calculate the variables' values in multiple rounds. For example, when a precalculated variable is referenced by another precalculated variable that also has its ignore expression set (especially if the ignore expression references that other variable), or its value is reset on a break boundary, the referred variable's value needs to be computed first, in order for the referring variable value to be intuitively correct.