Rick's answer is a good frequency-domain answer: the sinc function has zeros, so the filter's frequency-domain response has zeros.
It may be easier to do this in the time domain, though. A $1^{st}$ order sinc filter in the frequency domain is a "boxcar" filter in the time domain, with an impulse response of
$$h(\tau) = \begin{cases}
\frac{1}{T} & -\frac{T}{2} < \tau < \frac{T}{2} \\
0 & \text{otherwise}
\end{cases}$$
This is called a "boxcar" filter because if you plot it, it's just a box sitting on the x axis.
This impulse response, in turn, just describes a moving-average filter:
$$y(t) = \frac{1}{T}\int_{t - \frac{T}{2}}^{t + \frac{T}{2}} x(\tau) d\tau$$
So why all the hard-seeming math? Because if you take the average of an integer number of cycles of a sine wave, no matter the starting and stopping points, the result is zero. So your filter quite naturally has zeros for any frequency where there are an integer number of cycles over a span of $T$.
The reason the notches get deeper for higher-order filters is that an $n^{th}$-order sinc filter (if you do it the normal way, apparently not an your author has done) can be realized by cascading $n$ moving average filters (i.e., take the output of one and feed it into the input of the next). So when the frequency is close to an integer number of cycles in a span of $T$, each stage attenuates signals at that frequency by the same amount -- the result is that the attenuation is just ever much more so as you increase stages (i.e., filter order).