I could not verify the statement
For a population of 7 million cats, if we sample 246 cats, then 19 out of 20 times the sample is within 5% of the true value.
Trying to reverse engineer what they might have done, we could have
$$\frac{0.8}{\sqrt{246}} \approx 0.05$$
But that expression makes no sense.
Another potential derivation, mentioned by Whuber in the comments, could be based on a z-test but with a minor mistake.
$$ Z_{\alpha/2} \cdot \sigma_X = 0.05 \cdot \mu_X $$
Filling in the variance $\sigma_X = \sqrt(np(1-p)$ and mean $\mu_X = pn$ of the binomial distribution gives an answer close to the computation below. But if one fills in $\mu_X = n$, then the result will be $n \approx 246$. That is however an erroneous computation.
Say, the true probability is 0.8 and you sample 246, then the outcome of your experiment will be binomial distributed (given that you performed the experiment well like sampling independently and without bias as mentioned in the video).
Below is a plot how this distribution looks like and what the probability is to be 5% of the true value.
So, if the true value would be 80% then there is a 11.09 % probability that the observed percentage in the sample would be more than 5% away from the true value.
Note that this is only one way to make the computation. The computation of the interval that contains the true value 95% of the time (19 out of 20 cases), also known as a confidence interval can be done in different ways (by using different approaches or viewpoints). For the estimate of a percentage/proportion, the different ways are summarized on this Wikipedia page: https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval
But in any case, the number of 246 seems too low (although it is not a large difference, with the method that created the image the correct size would be $n=367$).
R-code to make the figure:
### settings
n = 246
#n = 367
p = 0.8
q = 1-p
x = 0:n
### plot binomial distribution
plot(x,dbinom(x,n,p), xlim = c(n*0.6,n),
pch = 21, col = 1, bg = 1, cex = 0.7, ylim = c(0,0.1),
ylab = "P(X = x)", xlab = "x", main = "distribution for number of cats that like Whiskas \n among sample of size 246 \n If true percentage would be 80%")
### add upper and lower 5% boundaries
upper = n*p*1.05
lower = n*p*0.95
lines(upper * c(1,1), c(0,1), lty = 2)
lines(lower * c(1,1), c(0,1), lty = 2)
text(upper, 0.03, "5% above true vale", pos = 4, srt = 90, cex = 0.8)
text(lower, 0.03, "5% below true vale", pos = 2, srt = -90, cex = 0.8)
### compute percentages and add to plot
x3 = round((1-pbinom(upper, n, p))*100,2)
x1 = round((pbinom(lower, n, p))*100,2)
x2 = round(100 - (1-pbinom(upper, n, p))*100 - (pbinom(lower, n, p))*100,2)
text(n*p, 0.1, paste0(x2, " %"))
text(n*p*1.1, 0.1, paste0(x3, " %"))
text(n*p*0.9, 0.1, paste0(x1, " %"))