I'm trying to learn about the subgradient descent optimization method. I'm having trouble understanding how it differs from basic gradient descent in a practical sense. According to this lecture, the next step in gradient descent is: $$x^{(k+1)}=x^{(k)}-t_k\nabla f(x^{(k)})$$ and the subgradient method step is: $$x^{(k+1)}=x^{(k)}-t_kg(x^{(k)})$$ Gradient descent applies to continuously differentiable functions, where $\nabla f(x^{(k)})$ is the gradient evaluated at the current step. For the subgradient method, $g(x^{(k)})$ is a subgradient of the objective function $f$ at $x^{(k)}$. If the objective function is differentiable at $x^{(k)}$, there is only one subgradient: $g(x^{(k)}) = \nabla f(x^{(k)})$. If $f$ has a "corner" at $x^{(k)}$ where the gradient is not defined, there may be more than one subgradient.
My confusion is that, for all practical purposes, it seems like the objective function will most likely be differentiable at each iteration, and wouldn't this make it the same as gradient descent? For example, take the objective function $f: \mathbb{R} \to \mathbb{R}$: $$\begin{equation} f(x)= \begin{cases} 2x-3, & |x| > 2 \\ \frac{1}{4}x^2, & |x| \leq 2 \end{cases} \end{equation}$$ The gradient is: $$\begin{equation} \nabla f(x)= \begin{cases} 2, & |x| > 2 \\ \frac{1}{2}x, & |x| < 2 \\ \rm{undefined}, & |x| = 2 \end{cases} \end{equation}$$ Since $f$ is not continuouly differentiable, we supposedly can't use gradient descent. But assuming we know these gradients, and if $|x^{(k)}| \neq 2$ over all iterations (likely), why don't we just use basic gradient descent to solve this?
My other question is this. Imagine, for the same problem, $x^{(k)} = 2$ (i.e. the corner) at some iteration $k$. The subgradient at $x=2$ can be any value $1 \leq g \leq 2$ [edited 13 June 2020, replacing $\neq$ with $\leq$]. If we're using the subgradient method, how do we choose a value for $g$ in this range for this iteration?