In short

The vector triple product \vec{a} \times (\vec{b} \times \vec{c}) is itself a vector, and it equals (\vec{a} \cdot \vec{c})\vec{b} - (\vec{a} \cdot \vec{b})\vec{c}. This is called the BAC-CAB rule (read the coefficients: B(\vec{a}\cdotC) minus C(\vec{a}\cdotB)). It says that crossing a vector with a cross product always lands you back in the plane of the two vectors inside the parentheses.

You know the cross product: \vec{b} \times \vec{c} takes two vectors and returns a third vector perpendicular to both of them. But what if you then cross that result with yet another vector \vec{a}? You get \vec{a} \times (\vec{b} \times \vec{c}) — a cross product of a cross product.

This raises a natural question: what direction does the result point in? And is there a simpler way to write it, rather than grinding through component calculations every time?

The answer to both questions is surprisingly clean. The vector \vec{a} \times (\vec{b} \times \vec{c}) always lies in the plane of \vec{b} and \vec{c} — not in some arbitrary direction, but specifically in the plane of the two vectors inside the parentheses. And it can be written as a simple linear combination of \vec{b} and \vec{c}, with coefficients that are just dot products. The formula is so useful that it has a mnemonic: the BAC-CAB rule.

Why does the result lie in the b-c plane?

Before deriving the formula, the geometric reason is worth seeing.

\vec{b} \times \vec{c} is perpendicular to the plane of \vec{b} and \vec{c}. Call the direction of \vec{b} \times \vec{c} the "normal" to the \vec{b}-\vec{c} plane.

Now compute \vec{a} \times (\vec{b} \times \vec{c}). The cross product of any two vectors is perpendicular to both of them. So \vec{a} \times (\vec{b} \times \vec{c}) is perpendicular to \vec{b} \times \vec{c} — which means it is perpendicular to the normal of the \vec{b}-\vec{c} plane. A vector perpendicular to a plane's normal must lie in the plane.

Therefore \vec{a} \times (\vec{b} \times \vec{c}) lies in the plane of \vec{b} and \vec{c}.

The vector triple product lies in the plane of b and cA plane containing vectors b and c. The cross product b cross c points perpendicular to this plane, straight upward. The vector a comes from an arbitrary direction. The result a cross (b cross c) lies in the plane of b and c because it must be perpendicular to b cross c. plane of b and c b c b × c a a × (b × c) lies in the plane
The vector $\vec{b} \times \vec{c}$ (dashed) points out of the $\vec{b}$-$\vec{c}$ plane. The vector $\vec{a}$ can point anywhere. But $\vec{a} \times (\vec{b} \times \vec{c})$ must be perpendicular to $\vec{b} \times \vec{c}$, so it has to lie *in* the plane of $\vec{b}$ and $\vec{c}$. This means it can always be written as $\alpha\vec{b} + \beta\vec{c}$ for some scalars $\alpha$ and $\beta$.

Since the result lies in the \vec{b}-\vec{c} plane, it must be a linear combination of \vec{b} and \vec{c}:

\vec{a} \times (\vec{b} \times \vec{c}) = \alpha\vec{b} + \beta\vec{c}

for some scalars \alpha and \beta. The derivation below finds exactly what \alpha and \beta are.

Deriving the BAC-CAB formula

The geometric argument tells you that \vec{a} \times (\vec{b} \times \vec{c}) = \alpha\vec{b} + \beta\vec{c}, but it does not tell you what \alpha and \beta are. To find them, you need to compute. The approach is straightforward: write everything in components, expand, and watch the dot products emerge.

Let \vec{a} = a_1\hat{i} + a_2\hat{j} + a_3\hat{k}, \vec{b} = b_1\hat{i} + b_2\hat{j} + b_3\hat{k}, \vec{c} = c_1\hat{i} + c_2\hat{j} + c_3\hat{k}.

The brute-force approach is to compute \vec{b} \times \vec{c} first, then cross \vec{a} with the result. The algebra is a bit long, but the pattern that emerges at the end is worth every line.

First, compute \vec{b} \times \vec{c}:

\vec{b} \times \vec{c} = (b_2c_3 - b_3c_2)\hat{i} + (b_3c_1 - b_1c_3)\hat{j} + (b_1c_2 - b_2c_1)\hat{k}

Now compute the \hat{i}-component of \vec{a} \times (\vec{b} \times \vec{c}). The \hat{i}-component of \vec{p} \times \vec{q} is p_2q_3 - p_3q_2, where \vec{p} = \vec{a} and \vec{q} = \vec{b} \times \vec{c}:

[\vec{a} \times (\vec{b} \times \vec{c})]_1 = a_2(b_1c_2 - b_2c_1) - a_3(b_3c_1 - b_1c_3)

Expand this:

= a_2b_1c_2 - a_2b_2c_1 - a_3b_3c_1 + a_3b_1c_3

Group the terms by pulling out b_1 from two terms and c_1 from the other two:

= b_1(a_2c_2 + a_3c_3) - c_1(a_2b_2 + a_3b_3)

Now comes the key step. Add and subtract a_1b_1c_1:

= b_1(a_1c_1 + a_2c_2 + a_3c_3) - c_1(a_1b_1 + a_2b_2 + a_3b_3)

The expressions in parentheses are dot products:

= b_1(\vec{a} \cdot \vec{c}) - c_1(\vec{a} \cdot \vec{b})

The \hat{j}-component follows the same pattern. The \hat{j}-component of \vec{p} \times \vec{q} is p_3q_1 - p_1q_3:

[\vec{a} \times (\vec{b} \times \vec{c})]_2 = a_3(b_2c_3 - b_3c_2) - a_1(b_1c_2 - b_2c_1)

Expanding and grouping as before (pull out b_2 and c_2, then add and subtract a_2b_2c_2):

= b_2(a_1c_1 + a_2c_2 + a_3c_3) - c_2(a_1b_1 + a_2b_2 + a_3b_3) = b_2(\vec{a} \cdot \vec{c}) - c_2(\vec{a} \cdot \vec{b})

The \hat{k}-component follows the same pattern identically. So, collecting all three components:

\vec{a} \times (\vec{b} \times \vec{c}) = (\vec{a} \cdot \vec{c})\vec{b} - (\vec{a} \cdot \vec{b})\vec{c}

This is the BAC-CAB formula.

BAC-CAB rule (Vector triple product expansion)

For any three vectors \vec{a}, \vec{b}, \vec{c}:

\vec{a} \times (\vec{b} \times \vec{c}) = (\vec{a} \cdot \vec{c})\,\vec{b} \;-\; (\vec{a} \cdot \vec{b})\,\vec{c}

The mnemonic: read the right side as B(\vec{a}\cdotC) - C(\vec{a}\cdotB), which sounds like "BAC minus CAB" — back minus cab.

For the cross product with parentheses on the other side:

(\vec{a} \times \vec{b}) \times \vec{c} = (\vec{c} \cdot \vec{a})\,\vec{b} \;-\; (\vec{c} \cdot \vec{b})\,\vec{a}
The BAC-CAB mnemonicA visual mnemonic for the BAC-CAB rule. The expression a cross (b cross c) equals B times (A dot C) minus C times (A dot B). The letters B, A, C and C, A, B are highlighted to show the BAC-CAB pattern. The mnemonic a × (b × c) = B ( A · C ) − C ( A · B ) BAC − CAB
The BAC-CAB mnemonic: in $(\vec{a}\cdot\vec{c})\vec{b} - (\vec{a}\cdot\vec{b})\vec{c}$, read the vector that multiplies and the two inside each dot product. The first term spells BAC, the second spells CAB. "Back minus cab."

The parentheses matter

Notice that \vec{a} \times (\vec{b} \times \vec{c}) is not the same as (\vec{a} \times \vec{b}) \times \vec{c}.

The first gives (\vec{a} \cdot \vec{c})\vec{b} - (\vec{a} \cdot \vec{b})\vec{c} — a linear combination of \vec{b} and \vec{c}.

The second gives (\vec{c} \cdot \vec{a})\vec{b} - (\vec{c} \cdot \vec{b})\vec{a} — a linear combination of \vec{a} and \vec{b}.

The two results are generally different. This means the cross product is not associative: moving the parentheses changes the answer. This is one of the few operations in school mathematics where associativity fails. (Addition and multiplication are both associative. The cross product is not.)

A concrete check of non-associativity

Take \vec{a} = \hat{i}, \vec{b} = \hat{j}, \vec{c} = \hat{i} + \hat{j}.

First compute \vec{a} \times (\vec{b} \times \vec{c}). By BAC-CAB:

\vec{a} \cdot \vec{c} = 1, \quad \vec{a} \cdot \vec{b} = 0
\vec{a} \times (\vec{b} \times \vec{c}) = (1)\hat{j} - (0)(\hat{i} + \hat{j}) = \hat{j}

Now compute (\vec{a} \times \vec{b}) \times \vec{c}. First, \vec{a} \times \vec{b} = \hat{i} \times \hat{j} = \hat{k}. Then use the formula for the other parenthesisation:

\vec{c} \cdot \vec{a} = 1, \quad \vec{c} \cdot \vec{b} = 1
(\vec{a} \times \vec{b}) \times \vec{c} = (1)\hat{j} - (1)\hat{i} = -\hat{i} + \hat{j}

The first gives \hat{j}. The second gives -\hat{i} + \hat{j}. Two different vectors. Moving the parentheses changes the result, even with simple unit vectors.

The cross product is not associativeTwo diagrams showing that a cross (b cross c) lies in the plane of b and c, while (a cross b) cross c lies in the plane of a and b. These are different planes, so the results are generally different. a × (b × c) plane of b, c b c result (a × b) × c plane of a, b a b result
$\vec{a} \times (\vec{b} \times \vec{c})$ lives in the plane of $\vec{b}$ and $\vec{c}$ (left), while $(\vec{a} \times \vec{b}) \times \vec{c}$ lives in the plane of $\vec{a}$ and $\vec{b}$ (right). Different planes, different results. The cross product is not associative.

Lagrange's identity

The BAC-CAB formula leads to a powerful identity connecting cross products and dot products. Start with the magnitude squared of a cross product.

Take any two vectors \vec{a} and \vec{b}. Consider (\vec{a} \times \vec{b}) \cdot (\vec{a} \times \vec{b}) = |\vec{a} \times \vec{b}|^2.

Write |\vec{a} \times \vec{b}|^2 as the dot product of \vec{a} \times \vec{b} with itself. Using the scalar triple product rearrangement:

|\vec{a} \times \vec{b}|^2 = (\vec{a} \times \vec{b}) \cdot (\vec{a} \times \vec{b})

Now use a clever approach: treat this as \vec{a} \cdot [\vec{b} \times (\vec{a} \times \vec{b})], using the property that \vec{p} \cdot (\vec{q} \times \vec{r}) = (\vec{p} \times \vec{q}) \cdot \vec{r}. Apply the BAC-CAB rule to the inner cross product \vec{b} \times (\vec{a} \times \vec{b}):

\vec{b} \times (\vec{a} \times \vec{b}) = (\vec{b} \cdot \vec{b})\vec{a} - (\vec{b} \cdot \vec{a})\vec{b} = |\vec{b}|^2\vec{a} - (\vec{a} \cdot \vec{b})\vec{b}

Dot with \vec{a}:

|\vec{a} \times \vec{b}|^2 = \vec{a} \cdot [|\vec{b}|^2\vec{a} - (\vec{a} \cdot \vec{b})\vec{b}] = |\vec{a}|^2|\vec{b}|^2 - (\vec{a} \cdot \vec{b})^2

This is Lagrange's identity:

|\vec{a} \times \vec{b}|^2 = |\vec{a}|^2\,|\vec{b}|^2 - (\vec{a} \cdot \vec{b})^2

This identity is a vector version of the Cauchy-Schwarz inequality (since |\vec{a} \times \vec{b}|^2 \geq 0, it implies (\vec{a} \cdot \vec{b})^2 \leq |\vec{a}|^2|\vec{b}|^2). It also gives a direct proof that |\vec{a} \times \vec{b}| = |\vec{a}||\vec{b}|\sin\theta:

|\vec{a} \times \vec{b}|^2 = |\vec{a}|^2|\vec{b}|^2 - |\vec{a}|^2|\vec{b}|^2\cos^2\theta = |\vec{a}|^2|\vec{b}|^2(1 - \cos^2\theta) = |\vec{a}|^2|\vec{b}|^2\sin^2\theta

Taking the positive square root gives |\vec{a} \times \vec{b}| = |\vec{a}||\vec{b}|\sin\theta.

Computing one from start to finish

Example 1: Applying the BAC-CAB rule

Find \vec{a} \times (\vec{b} \times \vec{c}) for \vec{a} = \hat{i} + 2\hat{j} + \hat{k}, \vec{b} = 2\hat{i} + \hat{j} - \hat{k}, \vec{c} = \hat{i} - \hat{j} + 2\hat{k}.

Step 1. Compute the dot products \vec{a} \cdot \vec{c} and \vec{a} \cdot \vec{b}.

\vec{a} \cdot \vec{c} = (1)(1) + (2)(-1) + (1)(2) = 1 - 2 + 2 = 1
\vec{a} \cdot \vec{b} = (1)(2) + (2)(1) + (1)(-1) = 2 + 2 - 1 = 3

Why: the BAC-CAB formula needs these two numbers — they become the coefficients of \vec{b} and \vec{c}.

Step 2. Apply the formula \vec{a} \times (\vec{b} \times \vec{c}) = (\vec{a} \cdot \vec{c})\vec{b} - (\vec{a} \cdot \vec{b})\vec{c}.

= (1)\vec{b} - (3)\vec{c}

Why: plug in the dot products. The formula converts a double cross product into a linear combination — no cross product needed at all.

Step 3. Expand.

= (2\hat{i} + \hat{j} - \hat{k}) - 3(\hat{i} - \hat{j} + 2\hat{k})
= 2\hat{i} + \hat{j} - \hat{k} - 3\hat{i} + 3\hat{j} - 6\hat{k}

Why: distribute the scalar 3 through each component of \vec{c}, then subtract term by term.

Step 4. Combine.

= (2-3)\hat{i} + (1+3)\hat{j} + (-1-6)\hat{k} = -\hat{i} + 4\hat{j} - 7\hat{k}

Result: \vec{a} \times (\vec{b} \times \vec{c}) = -\hat{i} + 4\hat{j} - 7\hat{k}.

Vector triple product as a linear combination of b and cThe vectors b and c in a plane, with the result vector a cross (b cross c) shown as the linear combination b minus 3c, lying in the same plane as b and c. plane of b and c b c a a × (b × c) = b − 3c
The result $\vec{a} \times (\vec{b} \times \vec{c}) = \vec{b} - 3\vec{c} = -\hat{i} + 4\hat{j} - 7\hat{k}$ lies in the plane of $\vec{b}$ and $\vec{c}$, exactly as the BAC-CAB formula predicts. No matter what $\vec{a}$ is, the result always lives in the $\vec{b}$-$\vec{c}$ plane.

Compare this to computing \vec{b} \times \vec{c} first and then crossing \vec{a} with the result — that would require two full cross-product computations, each involving six terms. The BAC-CAB formula got the answer in one line.

Example 2: Verifying Lagrange's identity

Verify Lagrange's identity |\vec{a} \times \vec{b}|^2 = |\vec{a}|^2|\vec{b}|^2 - (\vec{a} \cdot \vec{b})^2 for \vec{a} = 3\hat{i} + \hat{j} - 2\hat{k} and \vec{b} = \hat{i} - 3\hat{j} + 4\hat{k}.

Step 1. Compute \vec{a} \times \vec{b}.

\vec{a} \times \vec{b} = \begin{vmatrix} \hat{i} & \hat{j} & \hat{k} \\ 3 & 1 & -2 \\ 1 & -3 & 4 \end{vmatrix} = (4-6)\hat{i} - (12+2)\hat{j} + (-9-1)\hat{k} = -2\hat{i} - 14\hat{j} - 10\hat{k}

Why: compute the cross product using the standard determinant method to get the left side of the identity.

Step 2. Compute |\vec{a} \times \vec{b}|^2.

|\vec{a} \times \vec{b}|^2 = (-2)^2 + (-14)^2 + (-10)^2 = 4 + 196 + 100 = 300

Why: this is the left side of Lagrange's identity.

Step 3. Compute |\vec{a}|^2, |\vec{b}|^2, and \vec{a} \cdot \vec{b}.

|\vec{a}|^2 = 9 + 1 + 4 = 14, \qquad |\vec{b}|^2 = 1 + 9 + 16 = 26
\vec{a} \cdot \vec{b} = 3 - 3 - 8 = -8

Why: these three numbers build the right side of the identity.

Step 4. Compute the right side.

|\vec{a}|^2|\vec{b}|^2 - (\vec{a} \cdot \vec{b})^2 = 14 \times 26 - (-8)^2 = 364 - 64 = 300

Why: the right side evaluates to 300, matching the left side exactly.

Result: Both sides equal 300. Lagrange's identity holds.

Lagrange's identity visualised as a right triangleA right triangle where the hypotenuse represents |a||b|, one leg represents |a dot b| (the dot product magnitude), and the other leg represents |a cross b| (the cross product magnitude). The Pythagorean theorem on this triangle is Lagrange's identity. |a · b| = 8 |a × b| = √300 |a| · |b| = √364 (√364)² = 8² + (√300)² → 364 = 64 + 300 ✓
Lagrange's identity is a Pythagorean theorem in disguise. The dot product and the cross product are the two "legs" of a right triangle whose hypotenuse is $|\vec{a}||\vec{b}|$. The identity $|\vec{a}|^2|\vec{b}|^2 = (\vec{a}\cdot\vec{b})^2 + |\vec{a}\times\vec{b}|^2$ is $c^2 = a^2 + b^2$ in a new setting.

The geometric picture is striking: the dot product captures "how much two vectors are aligned" (\cos\theta part) and the cross product captures "how much they are misaligned" (\sin\theta part). Lagrange's identity says these two pieces account for everything — like the two legs of a right triangle making up the hypotenuse.

Applications

The BAC-CAB formula shows up in three places regularly.

1. Simplifying complicated vector expressions. Any time you see a double cross product, replace it with dot products. This is especially useful in physics, where electromagnetic field equations often involve \vec{a} \times (\vec{b} \times \vec{c}).

2. Proving other vector identities. Many vector identities that look hard to prove become straightforward once you apply BAC-CAB. For instance, you can prove that

\vec{a} \times (\vec{b} \times \vec{c}) + \vec{b} \times (\vec{c} \times \vec{a}) + \vec{c} \times (\vec{a} \times \vec{b}) = \vec{0}

by expanding each term using BAC-CAB:

= [(\vec{a}\cdot\vec{c})\vec{b} - (\vec{a}\cdot\vec{b})\vec{c}] + [(\vec{b}\cdot\vec{a})\vec{c} - (\vec{b}\cdot\vec{c})\vec{a}] + [(\vec{c}\cdot\vec{b})\vec{a} - (\vec{c}\cdot\vec{a})\vec{b}]

Grouping by vector: the \vec{a} terms are -(\vec{b}\cdot\vec{c})\vec{a} + (\vec{c}\cdot\vec{b})\vec{a} = 0. The \vec{b} terms are (\vec{a}\cdot\vec{c})\vec{b} - (\vec{c}\cdot\vec{a})\vec{b} = 0. The \vec{c} terms are -(\vec{a}\cdot\vec{b})\vec{c} + (\vec{b}\cdot\vec{a})\vec{c} = 0. The sum is \vec{0}.

This identity — sometimes called the Jacobi identity for the cross product — would be very hard to prove without the BAC-CAB formula.

The Jacobi identity: three terms summing to zeroThree boxes showing the three terms of the Jacobi identity, connected by plus signs, with equals zero at the end. Each term is a cyclic rotation of the previous one. a × (b × c) + b × (c × a) + c × (a × b) = 0 Each term is a cyclic rotation. Expand by BAC-CAB — all six pieces cancel in pairs.
The Jacobi identity: the three cyclic vector triple products sum to the zero vector. This is one of the deepest structural properties of the cross product, and the BAC-CAB formula proves it in three lines.

3. Deriving Lagrange's identity. As shown above, the BAC-CAB formula gives a clean derivation of |\vec{a} \times \vec{b}|^2 = |\vec{a}|^2|\vec{b}|^2 - (\vec{a} \cdot \vec{b})^2, which in turn proves the Cauchy-Schwarz inequality for vectors.

4. The reciprocal system of vectors. Given three non-coplanar vectors \vec{a}, \vec{b}, \vec{c}, the reciprocal system \vec{a}' = \frac{\vec{b} \times \vec{c}}{[\vec{a}\;\vec{b}\;\vec{c}]} (and cyclically) has the property that the reciprocal of the reciprocal equals the original. Proving this requires expanding a product of the form (\vec{c} \times \vec{a}) \times (\vec{a} \times \vec{b}), which is a vector triple product. The BAC-CAB formula is the tool that makes the proof work — you will see it in the article on the reciprocal system.

The formula for the other parenthesisation

For completeness, here is the derivation of (\vec{a} \times \vec{b}) \times \vec{c}. The result must lie in the plane of \vec{a} and \vec{b} (by the same perpendicularity argument, applied to \vec{a} \times \vec{b} and \vec{c}):

(\vec{a} \times \vec{b}) \times \vec{c} = \alpha\vec{a} + \beta\vec{b}

To find \alpha and \beta, use the anticommutativity of the cross product: \vec{p} \times \vec{q} = -\vec{q} \times \vec{p}. So:

(\vec{a} \times \vec{b}) \times \vec{c} = -\vec{c} \times (\vec{a} \times \vec{b})

Apply BAC-CAB to \vec{c} \times (\vec{a} \times \vec{b}) with \vec{c} as the "outside" vector and \vec{a}, \vec{b} inside:

\vec{c} \times (\vec{a} \times \vec{b}) = (\vec{c} \cdot \vec{b})\vec{a} - (\vec{c} \cdot \vec{a})\vec{b}

Negate:

(\vec{a} \times \vec{b}) \times \vec{c} = -(\vec{c} \cdot \vec{b})\vec{a} + (\vec{c} \cdot \vec{a})\vec{b} = (\vec{c} \cdot \vec{a})\vec{b} - (\vec{c} \cdot \vec{b})\vec{a}

This confirms the formula stated in the definition box. The "outside" vector is always the one whose dot products appear as coefficients.

Common confusions

Going deeper

If you are here to learn the BAC-CAB formula, how to apply it, and why the cross product is not associative, you have it. The section below connects the vector triple product to tensor algebra and shows a cleaner proof using index notation.

Proof using index notation

For readers comfortable with summation convention: in index notation, the cross product (\vec{a} \times \vec{b})_i = \epsilon_{ijk}a_jb_k, where \epsilon_{ijk} is the Levi-Civita symbol.

The vector triple product becomes:

[\vec{a} \times (\vec{b} \times \vec{c})]_i = \epsilon_{ijk}a_j(\vec{b} \times \vec{c})_k = \epsilon_{ijk}a_j\epsilon_{klm}b_lc_m

Using the identity \epsilon_{ijk}\epsilon_{klm} = \delta_{il}\delta_{jm} - \delta_{im}\delta_{jl}:

= (\delta_{il}\delta_{jm} - \delta_{im}\delta_{jl})a_jb_lc_m = a_jb_ic_j - a_jb_jc_i = (\vec{a}\cdot\vec{c})b_i - (\vec{a}\cdot\vec{b})c_i

which is the i-th component of (\vec{a}\cdot\vec{c})\vec{b} - (\vec{a}\cdot\vec{b})\vec{c}. The entire proof rests on one identity for the product of two Levi-Civita symbols — a standard result in tensor algebra that you will meet in physics and advanced mathematics courses.

Connection to the scalar triple product

There is a clean relationship between the vector triple product and the scalar triple product. Taking the dot product of \vec{a} \times (\vec{b} \times \vec{c}) with any vector \vec{d}:

\vec{d} \cdot [\vec{a} \times (\vec{b} \times \vec{c})] = (\vec{a} \cdot \vec{c})(\vec{d} \cdot \vec{b}) - (\vec{a} \cdot \vec{b})(\vec{d} \cdot \vec{c})

This can be written as a 2 \times 2 determinant:

= \begin{vmatrix} \vec{a} \cdot \vec{b} & \vec{a} \cdot \vec{c} \\ \vec{d} \cdot \vec{b} & \vec{d} \cdot \vec{c} \end{vmatrix}

This determinant of dot products is called a Gram determinant. It connects the geometry of volumes (through the scalar triple product) to the geometry of angles (through dot products), and it generalises to higher dimensions.

Where this leads next

The vector triple product connects to several important ideas.