short answer: yes.

but why? why does "one-sided" (in this case, right) identity and inverse, imply "two-sided"?

first of all, it's important to realize that we need both a right-identity AND a right-inverse for this to work.

let's call our (right) identity, e'. so all we know, so far, is that for any a in S, a*e' = a.

but...we also have a right-inverse for a, that is, some b for which a*b = e'.

now, suppose for a moment that a*a = a (for some particular a). let b be a right inverse for a.

then (a*a)*b = a*b = e', so

a*(a*b) = e' (by associativity)

a*e' = e' (since a*b = e')

a = e'. remember this fact.

now, since every element has a right-inverse, so does e', that is, there is some f, for which:

e'*f = e'.

but then:

f = f*e' = f*(e'*f) = (f*e')*f = f*f, so f = e' (from our "remembered fact").

so e' is its own right inverse.

again, let's chose a and b so that a*b = e'.

now b*a = (b*e')*a (since e' is a right-identity)

= (b*(a*b))*a (since a*b = e')

= ((b*a)*a)*a = (b*a)*(b*a), by associativity (twice).

thus b*a = a*b = e'.

now, if b is such that b*a = a*b = e', then:

e'*a = (a*b)*a = a*(b*a) = a*e' = a, so e' is also a left-identity.

is this two-sided identity unique?

suppose we had another, called e".

then e' = e'*e" = e" (since both are two-sided identities).

so our two-sided identity is unique, and we can just call it "e".

is the element b for which b*a = a*b = e unique?

suppose that b' is another such element. so b'*a = a*b' = e, as well.

then b' = b'*e = b'*(a*b) = (b'*a)*b = e*b = b.

so inverses are unique as well.