This is an adaption of this answer.
Make sure that the following packages are loaded:
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
and add the following definition to your preamble:
\newcommand\sidecomment[5][0.1]%
{\begin{tikzpicture}[remember picture,overlay]
\draw[-stealth]
($({pic cs:#4}|-{pic cs:#2})+(#1,0)$)
.. controls +(0.2,-0.05) and +(0.2,0.1) ..
node[right,align=left]{#5}
($({pic cs:#4}|-{pic cs:#3})+(#1,0.1)$);
\end{tikzpicture}%
}
Add marks at the end of the lines where you want the arrow to start and end using
\tikzmark{name of mark}
Then you can use the command
\sidecomment[offset]{<start mark>}{<end mark>}{<alignment mark>}{<text>}
to draw an arrow from start mark to end mark labeled with text. To align start and end of the arrow vertically, use the rightmost of these two marks additionally as alignment mark. offset is an optional argument that allows to shift start and end of the arrow by the same amount to the right; it is a number x that gives the x-offset in cm. The default is 0.1, i.e., \sidecomment{a}{b}{c}{d} is the same as \sidecomment[0.1]{a}{b}{c}{d}, which means that the arrow starts and ends 1mm to the right of the mark.
Note that you have to run LaTeX twice to get the positions right.
The following document was typeset with the code below it.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\usepackage{amsmath}
\newcommand\sidecomment[5][0.1]%
{\begin{tikzpicture}[remember picture,overlay]
\draw[-stealth]
($({pic cs:#4}|-{pic cs:#2})+(#1,0)$)
.. controls +(0.2,-0.05) and +(0.2,0.1) ..
node[right,align=left]{#5}
($({pic cs:#4}|-{pic cs:#3})+(#1,0.1)$);
\end{tikzpicture}%
}
\begin{document}
\begin{align*}
3\cdot(-4) &=-12\tikzmark{a}\\
2\cdot(-4) &=-8\tikzmark{b}\\
1\cdot(-4) &=-4\tikzmark{c}\\
0\cdot(-4) &=0\tikzmark{d}
\end{align*}
\sidecomment{a}{b}{a}{step 1}
\sidecomment{b}{c}{a}{step 2}
\sidecomment{c}{d}{a}{step 3}
\end{document}
tikzmarkcan do the job. – Guilherme Zanotelli Jan 18 '17 at 11:58