uniform convergence on a sequence of two functions I have the following real analysis question.

Let $f_n , g_n$ be two sequences of functions such that $f_n
 \rightarrow 0$ uniformly and $g_n$ is bounded by $M$: $\forall x:
 |g_n(x)| \leq M$. Prove that $f_ng_n \rightarrow 0$ uniformly.

In my class, when asked to prove the uniform convergence of a given sequence of functions $f_n$, we have been showing that $\sup|f_n(x) - f(x)| \rightarrow 0$. My question is: how can we use the bound on $g_n$ in this approach.
If we have $|f_n(x)g_n(x) - f(x)g(x)|$, I'm unsure what we can do about the g(x) function.
Thanks so much.
 A: we have that $f_{n} \to 0$ uniformly on $E$. Then $\sup|f_{n}(x)| \to 0$. Thus for $\varepsilon > 0$ there exists some $N>0$ such that if $n\geq N \implies |f_{n}(x)| \leq \sup|f_{n}(x)|< \varepsilon $ for all $x \in E$. Now, take $\varepsilon > 0$, and $\tilde{\varepsilon} = \frac{\varepsilon}{M}$. Then there exist some $N > 0$ such that if $n \geq N \implies |f_{n}(x)| < \tilde{\varepsilon}$ for all $x \in E$. Then $|f_{n}(x)g_{n}(x)| = |f_{n}(x)||g_{n}(x)| \leq |f_{n}(x)|M < \tilde{\varepsilon}M = \varepsilon$ for all $n\geq N$, for all $x \in E$.
Then $\sup|f_{n}(x)g_{n}(x)| \to 0$
So $f_{n}g_{n} \to 0$ uniformly.
A: Hint: $|f_n(x)g_n(x)| \leq |f_n(x)|M$. If you know that $f_n \to 0$ uniformly, then you know $|f_n(x)| < \varepsilon$ for every $x$, if $n$ is large enough. Just pick $\varepsilon' = \varepsilon/M$
Edit: The OP seems a little confused about uniform convergence itself, so I'll give a brief explanation.
I suppose you are taking a course on Real Analysis, and so you must have already met notions of function convergence such as point-wise convergence. Now, you are working with uniform convergence. When does $f_n \to f$ uniformly? Well, when, for any $\varepsilon$ (no matter how tiny), you can find a number $N$ after which all members in the sequence $f_n$ are $\varepsilon$-close to $f$ in the sense that $\forall x: |f_n(x)-f(x)| < \varepsilon$.
How does uniform convergence look like? Specially, what does it mean for $f_n \to 0$?
If $|f_n(x)-0| < \varepsilon$, then it is as if the function $f$ is entirely contained inside a "street" (or "margin", "strip", suit yourself here) of length $\varepsilon$ centered at the origin.
One example of such $f_n$ is $f_n(x) = 1/n$.
Ok, having said that, suppose now you have an additional sequence $g_n$ such that $\forall x: |g_n(x)| < M$, for some positive $M$. These $g_n$ don't need to converge in any sense. For example, picture a "street" of length $1$ and, inside it, lots of functions that just wiggle randomly without leaving the strip.
Well, these guys are still bounded, so multiplying them by $1/n$ (for example) must slowly bring the resulting sequence $f_ng_n$ to ever smaller "streets" (of length $\varepsilon$). In the limit, this process brings $f_ng_n$ to $0$.
Formally, since $f_n \to 0$, we can pick $N$ s.t., for every $n \geq N$ and every $x$, we have $|f_n(x)| < \varepsilon/M$
Thus, for every $n \geq N$ and every $x$, $|f_ng_n(x) - 0| = |f_n(x)g_n(x)| = |f_n(x)||g_n(x)| \leq |f_n(x)|M < \varepsilon$.
This proves that $f_ng_n$ converge to $0$ uniformly. The important thing to note here is that "f" as in our definition of unif. convergence here is $0$.
