# Why does the yshift not work?

I have a TikZ code like below. As you can see in the second line in \foreach, I want the arrow placed below one by one. But it didn't work. I've tried to debug for a while, but have not fixed it.

\begin{tikzpicture}[scale = 0.6]
\foreach \n in {1,2,3,4,5}{
\node[shape=circle,draw,inner sep=0.7](number \n) at (\n,0) {$a_\n$};
\draw[|->,yshift=-\n cm](number 1.west) -- (number \n.east);
}
\node[inner sep=1] at (6,0) {$\cdots$};
\end{tikzpicture}


Should I write something like yshift=(-\n) cm to tell the engine for the precedence?

Here is one way to do it. You can yshift all you want, but (number \n) won't move.

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale = 0.6]
\foreach \n in {1,2,3,4,5}{
\node[shape=circle,draw,inner sep=0.7](number \n) at (\n,0) {$a_\n$};
\coordinate (level \n) at (0,-\n);
\draw[|->] (number 1.west |- level \n) -- (number \n.east |- level \n);
}
\node[inner sep=1] at (6,0) {$\cdots$};
\end{tikzpicture}
\end{document}


It turns out you can apply yshift INSIDE the coordinate.

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale = 0.6]
\foreach \n in {1,2,3,4,5}{
\node[shape=circle,draw,inner sep=0.7](number \n) at (\n,0) {$a_\n$};
\draw[|->] ([yshift=-\n cm] number 1.west) -- ([yshift=-\n cm] number \n.east);
}
\node[inner sep=1] at (6,0) {$\cdots$};
\end{tikzpicture}
\end{document}