When you have a complicated expression that clutters up your code, introduce temporary variables for parts of the expression so the expression itself is readable again.

Motivation

Expressions can become very complex and hard to read. In such a circumstance temporary variables can be very helpful to maintain the readability of your code.

Introduce Explaining Variable is particularly useful with long if-statements. You can take each condition, introduce an explaining variable and the conditional logic will read very well.
Another occasion is a long algorithmn where each step in the calculation can be explained with a well-named temporary variable.

If you ask me you should prefer Extract Method if you can, because more smaller methods are usually more readable and (re-)usable. However, there are times when Extract method doesn't work, because you the code is too cluttered up. In such a case you should use Introduce Explaining Variable
to see what's going in the code. Then you can decide whether Extract Method is the way to go.

Mechanics

The mechanics of Introduce Explaining Variable are very simple:

Declare a temporary variable and set it to the result of a part of the complex expression.

Replace the result part of the expression with your new temp.

Repeat for other parts of the expression.

Example Code

Okay we start with a calculation for a fictive price of an item. It could look something along the lines of the following:

You probably agree it's very hard to read. We are in dare need of a comment to maintain readability. Without the comment, not only
your colleagues would get lost in the code, but so would you. :) We deicde we can introduce a temp for the base price to start things off:

Notice that with our last refactoring the code speaks for itself and we should remove the comment altogether, as otherwise it would beDuplicate knowledge.

We could have gone for Extract Method as well,
because small methods for all parts of the price expression would be very neat in an object environment. Why? Because they would be visible to all other methods of the class and can be used there. Initially, they would be private,
but you can always relax that later to make them visible to other objects as well.

Looking good yes? For this example Extract method is indeed better, but I couldn't think of anything better to explain Introduce Explaining Variable to you. :) Perhaps some kind of conditional logic to check whether we are on IE or Mozilla would have been nice? Argh, too bad. :)