There are two keys to an understanding of expressions:
Expressions do only one thing: translate data values. Granted, that's a little bit like saying your computer's hard drive only has ones and zeros on it, but fundamentally, there are three types of data on which expressions do their work:
Expressions can either
Numerical and logic data can come from almost anywhere in the world of After Effects. They can derive from
Essentially every piece of numerical or Boolean data that exists in your After Effects project is accessible to expressions and can be used to create animations.
What Can't Expressions Do?
Expressions cannot natively evaluate certain types of data:
Nor can they handle certain complex effects data, such as effects channels that can be keyframed but whose keyframe values are not made up of four or fewer numerical values. For example, expressions work with RGBA datared, green, blue, and alpha channel values normalized between 0 and 1but they can't handle the Channel Range color control in Hue/Saturation.
Therefore although you can change the pixel values and audio levels of a layer using expressions, you can't sample a given pixel's RGB values, the decibel level of a soundtrack, or the position of a mask point.
Expressions are also only ever aware of conditions at the current point in time. You can create expressions that create a progression over time, but every frame up to the current one has to be recalculated from scratch on each frame, causing the expression to run more and more slowly over time. This can make physical simulations (such as the motion of a spring or the progression of a pattern) impractical.