JavaScript (Node.js), 5550 bytes
f=f=a=>a[1]?f(a,b=a.replace(/\((.>)?(.)(<.)?\)/,'$2'))=>a<b?f(b):ba
Repeat apply regex replace until no match foundonly 1 char left. The regex /\((.>)?(.)(<.)?\)/
get the calculate result as 2nd capturing group.
Save 1 byte, thanks to Arnauld