I am wondering what ~(event.status / 100) > 3 is doing in the below code taken from here?
- Is there a class of errors > 399?
- Why do we need ~here?
   @Injectable()
    export class AuthInterceptor implements HttpInterceptor {
      intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        console.info('req.headers =', req.headers, ';');
        return next.handle(req)
          .map((event: HttpEvent<any>) => {
            if (event instanceof HttpResponse && ~(event.status / 100) > 3) {
              console.info('HttpResponse::event =', event, ';');
            } else console.info('event =', event, ';');
            return event;
          })
          .catch((err: any, caught) => {
            if (err instanceof HttpErrorResponse) {
              if (err.status === 403) {
                console.info('err.error =', err.error, ';');
              }
              return Observable.throw(err);
            }
          });
      }
    }
 
     
    